// Decompiled by DJ v3.11.11.95 Copyright 2009 Atanas Neshkov  Date: 22/03/2011 12:27:15 p.m.
// Home Page: http://members.fortunecity.com/neshkov/dj.html  http://www.neshkov.com/dj.html - Check often for new version!
// Decompiler options: packimports(3) 
// Source File Name:   FacturacionController.java

package com.luxsoft.sw3.impap.ui.controllers;

import com.luxsoft.siipap.service.ServiceLocator2;
import com.luxsoft.siipap.service.ventas.FacturasManager;
import com.luxsoft.siipap.service.ventas.PedidosManager;
import com.luxsoft.siipap.swing.utils.SWExtUIManager;
import com.luxsoft.siipap.ventas.model.Venta;
import com.luxsoft.siipap.ventas.model.VentaDet;
import com.luxsoft.sw3.impap.ui.form.PedidoController;
import com.luxsoft.sw3.impap.ui.form.PedidoForm;
import com.luxsoft.sw3.ventas.Pedido;
import com.luxsoft.utils.LoggerHelper;

import java.util.Date;
import java.util.Iterator;
import java.util.List;
import javax.swing.SwingUtilities;
import org.apache.log4j.Logger;

public class FacturacionController
{

    private FacturacionController()
    {
        logger = LoggerHelper.getLogger();
    }

    public Venta facturar()
    {
        PedidoController model = new PedidoController();
        PedidoForm form = new PedidoForm(model);
        form.open();
        if(!form.hasBeenCanceled())
        {
            Pedido pedido = model.persist();
            logger.info((new StringBuilder("Pedido generado: ")).append(pedido.getFolio()).toString());
            facturar(pedido);
        }
        return null;
    }

    public List facturar(Pedido pedido){
        Date fecha = ServiceLocator2.obtenerFechaDelSistema();
        List<Venta> ventas = ServiceLocator2.getFacturasManager().prepararParaFacturar(pedido, fecha);
        for(Venta venta:ventas){
        	for(VentaDet det:venta.getPartidas()){        		
                det.setAduana(venta.getAduana());
                det.setPedimento(venta.getPedimento());
                det.setPedimentoFecha(venta.getPedimentoFecha());
        	}
        }
        List facturas = ServiceLocator2.getFacturasManager().facturar(ventas);
        return facturas;
    }

    public static FacturacionController getInstance()
    {
        if(INSTACE == null)
            INSTACE = new FacturacionController();
        return INSTACE;
    }

    public static void main(String args[])
    {
        SwingUtilities.invokeLater(new Runnable() {

            public void run()
            {
                SWExtUIManager.setup();
                try
                {
                    Pedido pedido = ServiceLocator2.getPedidosManager().get("8a8a81c7-2c7f53ed-012c-7f54ae74-0001");
                    FacturacionController.getInstance().facturar(pedido);
                   
                }
                catch(Exception e)
                {
                    e.printStackTrace();
                }
                System.exit(0);
               
            }

        }
);
    }

    private static FacturacionController INSTACE;
    private Logger logger;
}
